home *** CD-ROM | disk | FTP | other *** search
- ;------------------------------------------------------------------------------
- ;
- ; File: med3201.rom
- ; Version: 1.2
- ; Board: Data Expert, MED3201 - Based on AMD LT-1
- ; Chip: Am78C201 C0 Alpha
- ; Author: Ali Sobhi
- ; Copyright: Advanced Micro Devices,Inc., 1996. All Rights Reserved.
- ;
- ; Description: This PnP EEPROM map file is designed to activate the
- ; resources on an AMD Am78C201-C0 Interwave which is used
- ; in LT-1 board
- ;
- ; This map does not activate CD-ROM (i.e. no resources) and
- ; also activates the 6th logical device on IW (i.e.
- ; EXTERNAL TELEPHONY) with only I/O port resources needed
- ; and not any IRQ, DMA, or DRAM resources.
- ;
- ; Note: Since EEPROM on our designs has only 512 Bytes to store,
- ; make sure we don't have more than that. PNPMAP.EXE does
- ; not check for this maximum size.
- ;
- ;------------------------------------------------------------------------------
-
- ;-----------------------------------------------------------------------------
- ;
- ; NOTE: Very important
- ;
- ; To write this EEPROM map to an EEPROM, use PNPMAP.EXE, provided by AMD.
- ; Do not use any version of EEWRITE; the various versions of EEWRITE
- ; floating around come in various flavors; some do not support comments,
- ; others do not support quoted strings. Others support comments only at
- ; the beginning of a line, not at the end. Just use PNPMAP.EXE, the
- ; officially supported version from Advanced Micro Devices.
- ;
- ;-----------------------------------------------------------------------------
-
- ;-----------------------------------------------------------------------------
- ;
- ; Change History:
- ; 5/1/96 Ali Sobhi - Initial version based on LT2.ROM
- ; 5/13/96 Ali Sobhi - Changed the PnP Vendor ID
- ; 5/26/96 Ali Sobhi - Changed to map to use B2 IC and GPOUT
- ;
- ;---------------------------------------------------------------------------
-
- ;---------------------------------------------------------------------------
- ; PnP Header
- ;
- ; The PnP header contains the 72-bit "serial identifier", used by PnP
- ; initialization software to isolate the PnP device.
- ;---------------------------------------------------------------------------
- ; Vendor ID = DXP3201
- ; Serial No = 00000001
- 0x13 ; Vendor ID Byte 0
- 0x10 ; Vendor ID Byte 1
- 0x32 ; Vendor assigned product number (byte 0)
- 0x01 ; Vendor assigned product number (byte 1)
- 0x01 ; Serial Number Byte 0
- 0x00 ; Serial Number Byte 1
- 0x00 ; Serial Number Byte 2
- 0x00 ; Serial Number Byte 3
- 0x00 ; Special LFSR checksum (PnP specification appendix B)
- ; NOTE: The checksum field is autmatically calculated by
- ; PNPMAP.EXE so I leave it as 0x00
-
- ;---------------------------------------------------------------------------
- ; PnP Version
- ;
- ; The PnP version entry tells the PnP initialization software which
- ; version of the PnP specification the hardware is compatible with.
- ;---------------------------------------------------------------------------
-
- 0x0A ; PnP Version - Small item, PnP version tag, 2 bytes
- 0x10 ; InterWave is compatible with PnP spec 1.0
- 0x10 ; InterWave EEPROM version 1.0
-
- ;---------------------------------------------------------------------------
- ; ANSI Identifier string
- ;
- ; The Ansi Identifier string is an ASCII text string to display to the
- ; user for prompts and messages about the InterWave board.
- ;---------------------------------------------------------------------------
-
- 0x82 ; ANSI identifier string - Large item, ID string tag
- 0x14 ; Length byte 0 (low byte) - In total, 0x14h = 20 bytes long
- 0x00 ; Length byte 1 (high byte)
- 'MED3201 - Audio Card'
- ; Actual ANSI identifier
-
- ;---------------------------------------------------------------------------
- ; Vendor Defined Information
- ;
- ; This block contains information regarding the InterWave board.
- ;
- ; This is the definition of the vendor specific section, as defined by
- ; CSE:
- ;
- ; All data items are ASCIIZ, which means they are ASCII and terminated by
- ; a binary zero.
- ;
- ; All data items are prefixed by a 3 character type, which defines the
- ; type of data that follows.
- ;
- ; Normally, only one of each possible type of data item is allowed. The
- ; identifiers that are currently defined are:
- ;
- ; VERn.n - ASCIIZ Vendor defined block version number
- ; PID - ASCIIZ InterWave Part Identifier
- ; BID - ASCIIZ Board Identifier
- ;
- ; Since the data is ASCII, it must be followed by a zero byte terminator.
- ;
- ; What this data is used for:
- ;
- ; Future versions of the CSE SETUP utilities will read the Plug & Play
- ; EEPROM to determine what board is currently installed and will install
- ; the appropriate drivers and configuration files as required to operate
- ; the InterWave board. This data is used in addition to the vendor ID,
- ; so if you turn a revision of the board, PLEASE notify CSE as necessary,
- ; so we can maintain this data.
- ;---------------------------------------------------------------------------
- ;
- 0x84 ; Vendor defined data - Large item, ID string tag
- 0x1F ; Length byte 0 (low byte) - In total, 31 bytes long
- 0x00 ; Length byte 1 (high byte)
-
- ; Strings are NULL terminated.
- 'VER1.2' ; (7=6+1) Vendor defined data version 1.2
- 0x00
-
- 'PIDAm78C201 B2'; (15=14+1) Part Identifier and revision (space seperated)
- 0x00
-
- 'BIDLT 1A' ; (9=8+1) Board Identifier and revision (space seperated)
- 0x00
-
- ;===========================================================================
- ; Logical Device Block (0)
- ;
- ; The logical device defines the resources used by a specific function of
- ; the PnP device. The first logical device defined for InterWave is the
- ; InterWave synthesizer. Note that all resource information following
- ; the Logical Device Block applies to the previous Logical Device, until
- ; a new Logical Device Block is declared.
- ;===========================================================================
-
- 0x15 ; Small item, logical device ID, 5 bytes long
- 0x13 ; Vendor ID Byte 0
- 0x10 ; Vendor ID Byte 1
- 0x00 ; Vendor assigned function ID (byte 0)
- 0x10 ; Vendor assigned function ID (byte 1)
- 0x02 ; flags[1] = supports commands at index 0x31
-
- ;---------------------------------------------------------------------------
- ; ANSI Identifier string (0)
- ;
- ; The Ansi Identifier string is an ASCII text string to display to the user
- ; for prompts and messages about the InterWave board.
- ;
- ; Note - It turns out that the first release of Windows 95 does not use
- ; the information stored in this field; instead, it uses the .INF file to
- ; determine the ASCII string for this logical device. However, it does
- ; show up in the registry.
- ;---------------------------------------------------------------------------
-
- 0x82 ; ANSI identifier string - Large item, ID string tag
- 0x0D ; Length byte 0 (low byte) - In total, 13 bytes long
- 0x00 ; Length byte 1 (high byte)
- 'Synth & Codec' ; Actual ANSI identifier
-
- ;---------------------------------------------------------------------------
- ; InterWave Synthesizer IRQ structure (0)
- ;
- ; The IRQ structure defines which IRQs are supported for the
- ; specified logical device.
- ;
- ; Note: The familiar concept of describing ISA bus IRQ 2 as
- ; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
- ; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
- ; causes Windows 95 to prevent the interrupt from being
- ; selected (copnflict with the interrupt controller). The
- ; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
- ; is by specifying IRQ 9.
- ;---------------------------------------------------------------------------
-
- ;---------------------------------------------------------------------------
- ; InterWave Synthesizer DMA structure (0)
- ;
- ; The DMA structure defines which DMA channels are supported for
- ; the specified logical device. In our case, we require two DMA
- ; channels for the InterWave device, hence the need for two DMA
- ; structures. The first DMA specifier, DMA 1, is for Record. It
- ; is an eight-bit channel. The second, DMA 5, is for Play. It is
- ; a 16-bit channel. Note that SB/AdLib uses DMA 1 also but it picks
- ; this up automatically if its DMA is not assigned using pnp
- ; procedures as is the case here. The only negative result of this
- ; is that one cannot Record while SBOS is active.
- ;
- ;---------------------------------------------------------------------------
-
-
- ;---------------------------------------------------------------------------
- ; InterWave Synthesizer I/O port descriptor (0)
- ;
- ; The I/O port descriptor defines which I/O ports are supported
- ; for the specified logical device.
- ;
- ; Note that the "start dependent function", and "end dependent
- ; function", is not part of the I/O port descriptor. It is used
- ; to tell the PnP configuration software that this logical device
- ; has a preferred configuration for this resource (in our case,
- ; the synthesizer's preferred I/O resource is 220h/320h/32Ch),
- ; and what that preferred configuration is.
- ;
- ; Although the InterWave can support a large number of possible
- ; I/O port configurations, for backwards compatibility with
- ; Gravis software (and to make Sound Blaster emulation work),
- ; the only addresses allowed are 220h/320h/32Ch and
- ; 240h/340h/34Ch.
- ;---------------------------------------------------------------------------
-
-
-
- ;-----------------------------;
- ; Configuration 0 (preferred) ;
- ;-----------------------------;
-
- 0x31 ; Small item, start dependent function, 1 byte long
- 0x00 ; 00 = Preferred resource configuration
-
- 0x22 ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
- 0x00 ; Pic 0: 00 = 00000000
- 0x08 ; Pic 1: 18 = 00001000 (IRQ 11)
-
- 0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
- 0x80 ; E8 = 10000000 (DMA 7)
- 0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
-
- 0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
- 0x40 ; F8 = 01000000 (DMA 6)
- 0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x20 ; P2xR I/O address low = 220h
- 0x02 ; P2xR I/O address high = 220h
- 0x10 ; P2xR I/O address width = 16 contiguous I/O ports
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x20 ; P3xR I/O address low = 320h
- 0x03 ; P3xR I/O address high = 320h
- 0x08 ; P3xR I/O address width = 8 contiguous I/O ports
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x2C ; PCODAR I/O address low = 32Ch
- 0x03 ; PCODAR I/O address high = 32Ch
- 0x04 ; PCODAR I/O address width = 4 contiguous I/O ports
-
-
- ;------------------------------;
- ; Configuration 1 (acceptible) ;
- ;------------------------------;
-
- 0x31 ; Small item, start dependent function, 1 byte long
- 0x01 ; Acceptable configuration
-
- 0x22 ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
- 0x88 ; Pic 0: B0 = 10001000 (IRQ 7, 5, 3)
- 0x9A ; Pic 1: 9C = 10011010 (IRQ 15, 12, 11, 9)
-
- 0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
- 0xE8 ; E8 = 11101000 (DMA 7, 6, 5, 3)
- 0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
-
- 0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
- 0xF8 ; F8 = 11111000 (DMA 7, 6, 5, 4, 3)
- 0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x20 ; P2xR I/O address low = 220h
- 0x02 ; P2xR I/O address high = 220h
- 0x10 ; P2xR I/O address width = 16 contiguous I/O ports
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x20 ; P3xR I/O address low = 320h
- 0x03 ; P3xR I/O address high = 320h
- 0x08 ; P3xR I/O address width = 8 contiguous I/O ports
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x2C ; PCODAR I/O address low = 32Ch
- 0x03 ; PCODAR I/O address high = 32Ch
- 0x04 ; PCODAR I/O address width = 4 contiguous I/O ports
-
-
- ;------------------------------;
- ; Configuration 2 (Sub-optimal);
- ;------------------------------;
- 0x31 ; Small item, start dependent function, 1 byte long
- 0x02 ; 02 = Sub-optimal resource configuration, not best
-
- 0x22 ; Small item, IRQ tag, 2 bytes long (Synth IRQ 1)
- 0x88 ; Pic 0: 88 = 10001000 (IRQ 7, 3)
- 0x9A ; Pic 1: 9A = 10011010 (IRQ 15, 12, 11, 9)
-
- 0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 1)
- 0xE8 ; E8 = 11101000 (DMA 7, 6, 5, 3)
- 0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
-
- 0x2A ; Small item, DMA descriptor, 2 bytes long (Synth DMA 2)
- 0xF8 ; F8 = 11111000 (DMA 7, 6, 5, 4, 3)
- 0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x40 ; P2xR I/O address low = 240h
- 0x02 ; P2xR I/O address high = 240h
- 0x10 ; P2xR I/O address width = 16 contiguous I/O ports
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x40 ; P3xR I/O address low = 340h
- 0x03 ; P3xR I/O address high = 340h
- 0x08 ; P3xR I/O address width = 8 contiguous I/O ports
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x4C ; PCODAR I/O address low = 34Ch
- 0x03 ; PCODAR I/O address high = 34Ch
- 0x04 ; PCODAR I/O address width = 4 contiguous I/O ports
-
- 0x38 ; Small item, end dependent function, 0 bytes long
-
-
- ;
- ;===========================================================================
- ; Logical Device Block (1)
- ;
- ; This device is not in use.
- ;===========================================================================
-
- 0x15 ; Small item, logical device ID, 5 bytes long
- 0x13 ; Vendor ID Byte 0
- 0x10 ; Vendor ID Byte 1
- 0x00 ; Vendor assigned function ID (byte 0)
- 0x11 ; Vendor assigned function ID (byte 1)
- 0x02 ; flags[1] = supports commands at index 0x31
-
- ;---------------------------------------------------------------------------
- ; ANSI Identifier string (1)
- ;
- ; The Ansi Identifier string is an ASCII text string to display
- ; to the user for prompts and messages about the InterWave board.
- ;---------------------------------------------------------------------------
-
- 0x82 ; ANSI identifier string - Large item, ID string tag
- 0x15 ; Length byte 0 (low byte) - In total, 11 bytes long
- 0x00 ; Length byte 1 (high byte)
- 'Disabled ATAPI CD-ROM' ; Actual ASCII identifier
-
- ;---------------------------------------------------------------------------
- ; Disabled ATAPI CD-ROM Device gets no resources assigned.
- ;---------------------------------------------------------------------------
- ;
- ;;---------------------------------------------------------------------------
- ;; Compatible Device Block (1)
- ;;
- ;; The InterWave ATAPI CD-ROM interface is compatible with the
- ;; generic ATA/IDE/ESDI interface. We can tell the PnP manager
- ;; that this is true by specifying a compatible device block.
- ;; The PnP device ID for a ATA/IDE/ESDI interface is PNP0600
- ;; (see the Microsoft document DEVIDS.TXT).
- ;;---------------------------------------------------------------------------
- ;
- ;0x1C ; Small item, compatible device ID, 4 bytes long
- ;0x41 ; Device ID "PNPFFFF" in standard PnP vendor ID notation
- ;0xD0
- ;0xFF
- ;0xFF
- ;
- ;;---------------------------------------------------------------------------
- ;; InterWave CD-ROM IRQ structure
- ;;
- ;; The IRQ structure defines which IRQs are supported for the
- ;; specified logical device. In our case, we require one IRQ
- ;; for the InterWave CD-ROM.
- ;;
- ;; Note: The familiar concept of describing ISA bus IRQ 2 as
- ;; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
- ;; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
- ;; causes Windows 95 to prevent the interrupt from being
- ;; selected (conflict with the interrupt controller). The
- ;; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
- ;; is by specifying IRQ 9.
- ;;---------------------------------------------------------------------------
- ;
- ;0x22 ; Small item, IRQ tag, 2 bytes long (CD-ROM IRQ)
- ;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
- ;0x9C ; Pic 1: 9C = 10011100 (IRQ 15, 12, 11, 10)
- ;
- ;;---------------------------------------------------------------------------
- ;; InterWave CD-ROM I/O port descriptor
- ;;
- ;; The I/O port descriptor defines which I/O ports are supported
- ;; for the specified logical device.
- ;;
- ;; Note that the "start dependent function", and "end dependent
- ;; function", is not part of the I/O port descriptor. It is used
- ;; to tell the PnP configuration software that this logical device
- ;; has a preferred configuration for this resource (in our case,
- ;; the CD-ROM's preferred I/O resource is 170h/376h), and what
- ;; that preferred configuration is.
- ;;---------------------------------------------------------------------------
- ;;
- ;;-----------------------------;
- ;; Configuration 0 (preferred) ;
- ;;-----------------------------;
- ;
- ;0x31 ; Small item, start dependent function, 1 bytes long
- ;0x00 ; 00 = Preferred I/O resource configuration
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0x50 ; PCDRAR I/O address low = 150h
- ;0x01 ; PCDRAR I/O address high = 170h
- ;0x08 ; PCDRAR I/O address width = 8 contiguous I/O ports
- ;0x38 ; End dependent function tag
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0x76 ; PATAAR I/O address low = 376h
- ;0x03 ; PATAAR I/O address high = 376h
- ;0x02 ; PATAAR I/O address width = 2 contiguous I/O ports
- ;
- ;;-----------------------------;
- ;; Configuration 1 (alternate) ;
- ;;-----------------------------;
- ;
- ;0x31 ; Small item, start dependent function, 1 bytes long
- ;0x01 ; 01 = Acceptable I/O resource configuration, not best
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0x68 ; PCDRAR I/O address low = 168h
- ;0x01 ; PCDRAR I/O address high = 168h
- ;0x08 ; PCDRAR I/O address width = 8 contiguous I/O ports
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0x6E ; PATAAR I/O address low = 36Eh
- ;0x03 ; PATAAR I/O address high = 36Eh
- ;0x02 ; PATAAR I/O address width = 2 contiguous I/O ports
- ;
- ;;-----------------------------;
- ;; Configuration 2 (alternate) ;
- ;;-----------------------------;
- ;
- ;0x31 ; Small item, start dependent function, 1 bytes long
- ;0x01 ; 01 = Acceptable I/O resource configuration, not best
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0xE8 ; PCDRAR I/O address low = 1E8h
- ;0x01 ; PCDRAR I/O address high = 1E8h
- ;0x08 ; PCDRAR I/O address width = 8 contiguous I/O ports
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0xEE ; PATAAR I/O address low = 3EEh
- ;0x03 ; PATAAR I/O address high = 3EEh
- ;0x02 ; PATAAR I/O address width = 2 contiguous I/O ports
- ;
- ;0x38 ; End dependent function tag
-
-
- ;===========================================================================
- ; Logical Device Block (2)
- ;
- ; The third logical device on the InterWave part is the joystick
- ; (game port) interface. The joystick only uses a single
- ; I/O port.
- ;===========================================================================
-
- 0x15 ; Small item, logical device ID, 5 bytes long
- 0x13 ; Vendor ID Byte 0
- 0x10 ; Vendor ID Byte 1
- 0x00 ; Vendor assigned function ID (byte 0)
- 0x12 ; Vendor assigned function ID (byte 1)
- 0x02 ; flags[1] = supports commands at index 0x31
-
- ;---------------------------------------------------------------------------
- ; Compatible Device Block (2)
- ;
- ; The InterWave joystick interface is compatible with the generic
- ; gameport. We can tell the PnP manager that this is true by
- ; by specifying a compatible device block. The PnP device ID for
- ; the generic gameport is PNPB02F (see the Microsoft document
- ; DEVIDS.TXT).
- ;---------------------------------------------------------------------------
-
- 0x1C ; Small item, compatible device ID, 4 bytes long
- 0x41 ; Device ID "PNPB02F" in standard PnP vendor ID notation
- 0xD0
- 0xB0
- 0x2F
-
- ;---------------------------------------------------------------------------
- ; ANSI Identifier string (2)
- ;
- ; The Ansi Identifier string is an ASCII text string to display
- ; to the user for prompts and messages about the InterWave board.
- ;---------------------------------------------------------------------------
-
- 0x82 ; ANSI identifier string - Large item, ID string tag
- 0x09 ; Length byte 0 (low byte) - In total, 9 bytes long
- 0x00 ; Length byte 1 (high byte)
- 'Game Port' ; Actual ANSI identifier
-
- ;---------------------------------------------------------------------------
- ; InterWave Joystick I/O descriptor block (2)
- ;
- ; We only support a single I/O address for the joystick, for
- ; games compatibility.
- ;---------------------------------------------------------------------------
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x01 ; P2xR I/O address low = 201h
- 0x02 ; P2xR I/O address high = 201h
- 0x01 ; P2xR I/O address width = 1 I/O port
-
- ;===========================================================================
- ; Logical Device Block (3)
- ;
- ; The fourth logical device on the InterWave part is the Adlib
- ; FM register set and Sound Blaster interrupt line.
- ;===========================================================================
-
- 0x15 ; Small item, logical device ID, 5 bytes long
- 0x13 ; Vendor ID Byte 0
- 0x10 ; Vendor ID Byte 1
- 0x00 ; Vendor assigned function ID (byte 0)
- 0x13 ; Vendor assigned function ID (byte 1)
- 0x02 ; flags[1] = supports commands at index 0x31
-
- ;-------------------------------------------------------------------------
- ; ANSI Identifier string (3)
- ;
- ; The Ansi Identifier string is an ASCII text string to display
- ; to the user for prompts and messages about the InterWave board.
- ;---------------------------------------------------------------------------
-
- 0x82 ; ANSI identifier string - Large item, ID string tag
- 0x10 ; Length byte 0 (low byte) - In total, 16 bytes long
- 0x00 ; Length byte 1 (high byte)
- 'SB Digital Audio' ; Actual ANSI identifier
-
- ;---------------------------------------------------------------------------
- ; InterWave Sound Blaster IRQ structure (3)
- ;
- ; The IRQ structure defines which IRQs are supported for the
- ; specified logical device. In our case, we require one IRQ
- ; for the InterWave Sound Blaster device.
- ;
- ; Note: The familiar concept of describing ISA bus IRQ 2 as
- ; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
- ; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
- ; causes Windows 95 to prevent the interrupt from being
- ; selected (conflict with the interrupt controller). The
- ; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
- ; is by specifying IRQ 9.
- ;---------------------------------------------------------------------------
-
- 0x31 ; Small item, start dependent function, 1 byte long
- 0x00 ; 00 = Preferred IRQ resource configuration
-
- 0x22 ; Small item, IRQ tag, 2 bytes long (SB IRQ)
- 0x20 ; Pic 0: 20 = 00100000 (IRQ 5)
- 0x00 ; Pic 1: 00 = 00000000 (No IRQ on upper PIC)
-
- 0x31 ; Small item, start dependent function, 1 byte long
- 0x02 ; 02 = Sub-optimal IRQ resource configuration, not best
-
- 0x22 ; Small item, IRQ tag, 2 bytes long (SB IRQ)
- 0xA0 ; Pic 0: A0 = 10100000 (IRQ 7, 5)
- 0x00 ; Pic 1: 00 = 00000000 (no upper IRQs allowed for SB)
-
- 0x38 ; Small item, end dependent function, 0 bytes long
-
- ;---------------------------------------------------------------------------
- ; InterWave Adlib (Yamaha OPL-II FM) I/O descriptor block (3)
- ;
- ; We only support a single I/O address for the Adlib FM, for
- ; games compatibility.
- ;---------------------------------------------------------------------------
-
- 0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- 0x88 ; FM I/O address low = 388h
- 0x03 ; FM I/O address high = 388h
- 0x02 ; FM I/O address width = 2 consecutive I/O ports
-
- ;---------------------------------------------------------------------------
- ; InterWave SB DMA structure (3)
- ;
- ; The DMA structure defines which DMA channels are supported for
- ; the specified logical device. In our case, we require one DMA
- ; channel (1) for Sound Blaster DMA. However, the SYNTH\CODEC device
- ; uses DMA 1 for Record. This is the same channel SBOS needs. We do
- ; not request a DMA channel here because SBOS picks up DMA channel 1
- ; automatically if its DMA is not assigned using pnp procedures as
- ; is the case here. The only negative result of this is that one
- ; cannot Record while SBOS is active.
- ;
- ;---------------------------------------------------------------------------
-
- 0x2A ; Small item, DMA descriptor, 2 bytes long (SB DMA)
- 0x02 ; 02 = 00000010 (DMA 1 only)
- 0x19 ; DMA transfer types: 8-bit and 16-bit transfers supported
-
- ;===========================================================================
- ; Logical Device Block (4)
- ;
- ; The fifth logical device on the InterWave part is the MPU-401
- ; device.
- ;===========================================================================
-
- 0x15 ; Small item, logical device ID, 5 bytes long
- 0x13 ; Vendor ID Byte 0
- 0x10 ; Vendor ID Byte 1
- 0x00 ; Vendor assigned function ID (byte 0)
- 0x14 ; Vendor assigned function ID (byte 1)
- 0x02 ; flags[1] = supports commands at index 0x31
-
- ;---------------------------------------------------------------------------
- ; ANSI Identifier string (4)
- ;
- ; The Ansi Identifier string is an ASCII text string to display
- ; to the user for prompts and messages about the InterWave board.
- ;---------------------------------------------------------------------------
-
- 0x82 ; ANSI identifier string - Large item, ID string tag
- 0x08 ; Length byte 0 (low byte) - In total, 8 bytes long
- 0x00 ; Length byte 1 (high byte)
- 'GM Music' ; Actual ANSI identifier
-
- ;---------------------------------------------------------------------------
- ; InterWave MPU-401 IRQ structure (4)
- ;
- ; The IRQ structure defines which IRQs are supported for the
- ; specified logical device. In our case, we require one IRQ
- ; for the InterWave MPU-401 device.
- ;
- ; Note: The familiar concept of describing ISA bus IRQ 2 as
- ; "IRQ 2" or "IRQ 2/9" is not valid for the PnP EEPROM.
- ; Specifying ISA bus IRQ 2 in the EEPROM by setting IRQ 2
- ; causes Windows 95 to prevent the interrupt from being
- ; selected (conflict with the interrupt controller). The
- ; correct way to specify ISA bus IRQ 2 in the PnP EEPROM
- ; is by specifying IRQ 9.
- ;---------------------------------------------------------------------------
- ;
- ;0x31 ; Small item, start dependent function, 1 byte long
- ;0x00 ; 00 = Preferred I/O resource configuration
- ;0x22 ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
- ;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
- ;0x02 ; Pic 1: 02 = 00000010 (IRQ 9)
-
- ;0x30 ; Small item, start dependent function, 0 bytes long
- ;0x22 ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
- ;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
- ;0x04 ; Pic 1: 04 = 00000100 (IRQ 10)
-
- ;0x30 ; Small item, start dependent function, 0 bytes long
- ;0x22 ; Small item, IRQ tag, 2 bytes long (MPU-401 IRQ)
- ;0x00 ; Pic 0: 00 = 00000000 (No IRQs on lower PIC)
- ;0x08 ; Pic 1: 08 = 00001000 (IRQ 11)
-
- ;0x38 ; End dependent function tag
-
- ;---------------------------------------------------------------------------
- ; InterWave MPU-401 (General MIDI) I/O descriptor block (4)
- ;
- ; Many games support a variety of addresses for the MPU-401 I/O
- ; base address. For PnP, we are telling the PnP manager that
- ; we support: 330h, 332h, 334h, and 336h.
- ;---------------------------------------------------------------------------
-
- 0x31 ; Small item, start dependent function, 1 byte long
- 0x00 ; 00 = Preferred I/O resource configuration
-
- 0x4B ; Small item, Fixed I/O port descriptor, 3 bytes long
- 0x30 ; Lowest I/O base address (low byte) = 330h
- 0x03 ; Lowest I/O base address (high byte) = 330h
- 0x02 ; MPU-401 requires 2 consecutive I/O ports
-
- 0x31 ; Small item, start dependent function, 1 byte long
- 0x01 ; 01 = Acceptible I/O resource configuration, not best
-
- 0x47 ; Small item, I/O port descriptor, 7 bytes long
- 0x01 ; 16-bit I/O decode
- 0x30 ; Lowest I/O base address (low byte) = 330h
- 0x03 ; Lowest I/O base address (high byte) = 330h
- 0x36 ; Highest I/O base address (low byte) = 336h
- 0x03 ; Highest I/O base address (high byte) = 336h
- 0x02 ; I/O port must be aligned on a 2 byte boundary
- 0x02 ; MPU-401 requires 2 consecutive I/O ports
-
- 0x38 ; End dependent function
-
- ;;===========================================================================
- ;; Logical Device Block (5)
- ;; This device activates the external telephony support circuit.
- ;; In our case I only the the I/O Ports to be enabled (address is decoded)
- ;; No IRQ is needed
- ;;===========================================================================
- ;
- ;0x15 ; Small item, logical device ID, 5 bytes long
- ;0x13 ; Vendor ID Byte 0
- ;0x10 ; Vendor ID Byte 1
- ;0x00 ; Vendor assigned function ID (byte 0)
- ;0x15 ; Vendor assigned function ID (byte 1)
- ;0x02 ; flags[1] = supports commands at index 0x31
- ;
- ;;---------------------------------------------------------------------------
- ;; ANSI Identifier string (5)
- ;;---------------------------------------------------------------------------
- ;
- ;0x82 ; ANSI identifier string - Large item, ID string tag
- ;0x0E ; Length byte 0 (low byte) - In total, 14 bytes long
- ;0x00 ; Length byte 1 (high byte)
- ;'3D Spatializer'
- ;
- ;;---------------------------------------------------------------------------
- ;; These are the supported resources (5)
- ;;---------------------------------------------------------------------------
- ;
- ;0x31 ; Small item, start dependent function, 1 byte long
- ;0x00 ; 00 = Preferred I/O resource configuration
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0x50 ; PTELAR I/O address Base (low byte)= 0x350
- ;0x03 ; PTELAR I/O address Base (high byte)= 0x350
- ;0x08 ; Sixth Logical Device allows 8 consecutive ports
- ;
- ;
- ;0x31 ; Small item, start dependent function, 1 byte long
- ;0x02 ; 02 = Sub-optimal I/O resource configuration, not best
- ;
- ;0x4B ; Small item, fixed location I/O port descriptor, 3 bytes long
- ;0x60 ; PTELAR I/O address Base (low byte)= 0x360
- ;0x03 ; PTELAR I/O address Base (high byte)= 0x360
- ;0x08 ; Sixth Logical Device allows 8 consecutive ports
- ;
- ;0x38 ; End dependent flag
-
- ;
- ;===========================================================================
- ; End tag
- ;
- ; The end tag defines the end of the EEPROM, and the EEPROM
- ; checksum. Note that the checksum of zero means "unknown
- ; checksum", and that the PnP manager should not bother to verify
- ; that the EEPROM checksum is correct.
- ;===========================================================================
-
- 0x79
- 0x00
-